package com.cs.beneficios.web.action;
import com.cs.paoyer.administration.business.model.UserVO;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
//import org.apache.struts.action.ActionError;
//import org.apache.struts.action.ActionErrors;
import java.io.IOException;
import javax.servlet.ServletException;
import com.cs.beneficios.common.ConnectionFactory;
import java.sql.Connection;

public class BorrarSubprogramaAction extends Action 
{
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   * @return 
   * @throws java.io.IOException
   * @throws javax.servlet.ServletException
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
  {
   //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
   ConnectionFactory cf = new ConnectionFactory();
   //database db = new database();
   Connection conn = null;
   HttpSession session = request.getSession();
   String strrazon = null;
   
       try{              
            conn = cf.getConnection();        
//          conn = db.getConnectionWithDriver("beneficios","beneficios");
        }catch (SQLException e){
//            System.out.println("Error al realizar la conexi�n" + e.getMessage());
        }
    String strcodsub = request.getParameter("Codigo");
   String strOrigen = request.getParameter("origen");
    try {
        strrazon = request.getParameter("razon");
      }
      catch (Exception e){
        strrazon = "";
      }
    
  //Trae el codigo del programa al que pertenece el subprograma que se desactivara  
    String strSql1 = " SELECT prg_codigo FROM TCS_BEN_SUBPROGRAMA WHERE codigo = ? ";
    String strPar1[] = {strcodsub};
    ResultSet rs = null;
    String strcodprog = "";
  
        try{
          rs = cf.getRecordsRset(strSql1,strPar1,conn);
           while(rs.next()){
          strcodprog = rs.getString("prg_codigo");
           }
          }
        catch(SQLException e){
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
          }
          
   //Trae la cantidad de subprogramas que tiene el programa   
    int sub = 0;
    String cantsub = "";
    String strSql2 = " SELECT COUNT(sub.nombre) subprogramas "+
                     " FROM TCS_BEN_SUBPROGRAMA sub, TCS_BEN_PROGRAMA prog "+
                     " WHERE sub.PRG_CODIGO = prog.CODIGO AND prog.codigo = ? ";
    String strPar2[] = {strcodprog};
       try{
          rs = cf.getRecordsRset(strSql2,strPar2,conn);
          while(rs.next()){
          cantsub = rs.getString("subprogramas");
          sub = Integer.parseInt(cantsub.trim());
            }
          }
        catch(SQLException e){
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
          }
    
      //Proceso para la auditoria
      UserVO user = (UserVO) request.getSession().getAttribute("userInfo");
      String terminalAddress = request.getRemoteAddr();
      String strTerminal = ("WEB="+terminalAddress);
      Calendar c = Calendar.getInstance(); 
      SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");   
      //Fin del proceso
     
    if (sub == 1 ){
      String   strSql3 = " update tcs_ben_programa set vigencia ='I', "+
                         " USUARIO_MODIFICA = ?, FECHA_MODIFICA = to_date(?,'dd/mm/yyyy'), "+
                         " TERMINAL_MODIFICA = ? "+ 
                         " where codigo = ? ";
      String strPar3[] = {user.getName(), dateFormat.format(c.getTime()),strTerminal,strcodprog};                    
         try{
           int modificar = cf.execSql(strSql3,strPar3,conn);
           /*   if(modificar > 0)
              {
                session.setAttribute("mensajes","El subprograma fue desactivado");
               }*/
            }
             catch(SQLException e)
             {
				System.err.println("/******** TDSUB - cwsub");
				e.printStackTrace();
				System.err.println("TDSSPE - cwsub ********/");
                //session.setAttribute("mensajes","No fue posible desactivar el subprograma.");
             }    
         }
    
    String   strSql = " update tcs_ben_subprograma set vigencia ='I', comentario = '"+strrazon+"', "+
                      " USUARIO_MODIFICA = ?, FECHA_MODIFICA = to_date(?,'dd/mm/yyyy'), "+
                      " TERMINAL_MODIFICA = ? "+ 
                      " where codigo = ? ";
    
    String strPar[] = {user.getName(), dateFormat.format(c.getTime()),strTerminal,strcodsub};                         
         
             try{
               int modificar = cf.execSql(strSql,strPar,conn);
                 if(modificar > 0)
                  {
                       if(strOrigen != null){
                       session.setAttribute("mensajes","El beneficio fue desactivado correctamente.");
                         return mapping.findForward("success");
                     }else{
                        session.setAttribute("mensajes","El beneficio fue desactivado correctamente.");
                        request.setAttribute("indica","indica");
                        return mapping.findForward("forward1");
                    }
                  }
                 }
               catch(SQLException e)
                 {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
                  session.setAttribute("mensajes","No fue posible desactivar el subprograma.");
                   return mapping.findForward("forward1");
                 }    
       
         try{
            cf.closeConnection(conn);
         }catch (SQLException e)
         {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
         }
         //db.closeConnection(conn);
         return mapping.findForward("success");
  }
}